package com.qfmy.model.vo.user;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;
import java.util.Date;

/**
 * @author 清风明月
 * @Package com.qfmy.model.entity.user
 * @date 2025/11/11
 * @description 用户主表实体类（映射数据库user_info表）
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@SuppressWarnings("all")
public class UserInfoVo {

    @Schema(description = "用户编号（业务唯一标识，如“YX202500001”，避免直接暴露ID）")
    private String userNo;

    @Schema(description = "手机号（可空，支持第三方登录无手机号场景）")
    private String phone;

    @Schema(description = "邮箱（辅助登录，大牌APP均支持多账号体系）")
    private String email;

    @Schema(description = "头像URL（默认用系统头像，如“/static/touxiang.png”）")
    private String avatar;

    @Schema(description = "昵称（默认“游客XXX”，支持修改，限制敏感词）")
    private String username;

    @Schema(description = "性别（0=未知，1=男，2=女，用于个性化推荐）")
    private Integer gender;

    @Schema(description = "生日（用于年龄分层推荐）")
    private Date birthday;

    @Schema(description = "个性签名（个人主页展示）")
    private String signature;

    @Schema(description = "会员等级（0=非会员，1=周卡，7=月卡，30=季卡，365=年卡，3650=终身）")
    private Integer svipLevel;

    @Schema(description = "会员名称（如“年度SVIP”“终身会员”）")
    private String svipName;

    @Schema(description = "会员生效时间")
    private Date svipStart;

    @Schema(description = "会员到期时间（“我的”页面展示）")
    private Date svipEnd;

    @Schema(description = "是否自动续费（0=否，1=是，大牌APP会员核心功能）")
    private Integer svipRenew;

    @Schema(description = "累计阅读/观看时长（分钟，“我的”页面核心展示）")
    private Integer zongdu;

    @Schema(description = "今日观看时长（分钟，每日凌晨清零）")
    private Integer tingdu;

    @Schema(description = "累计登录天数（用于等级成长体系）")
    private Integer loginDays;

    @Schema(description = "汀贝余额（虚拟货币，“我的汀贝”展示）")
    private BigDecimal score;

    @Schema(description = "优惠券数量")
    private Integer coupon;

    @Schema(description = "关注数量")
    private Integer followCount;

    @Schema(description = "点赞数量")
    private Integer likeCount;

    @Schema(description = "默认夜间模式（0=否，1=是，用户偏好记忆）")
    private Integer nightMode;

    @Schema(description = "消息推送开关（0=关闭，1=开启，用户体验优化）")
    private Integer pushStatus;

    @Schema(description = "支付密码")
    private String payPassword;
}